Using an Array Data Structure, we can combine many data values of similar data types, but what if we want a data structure which can hold different values of different data types, to solve this problem in C++ we have another Data Structure known as Structure .
What is Structure in C++?
In C++ the structure is a User-Defined Data Structure, which can be used to hold groups items of different data types. To define a structure in C++ we use the struct keyword, and variables reside in a structure known as Structure members.
Create a Structure
The struct keyword is used to create the structure and the items it consists known as Members or Fields of Structures.
Structure Syntax:
struct structureName { member1; member2; member3; };
There are two types of Members in the C++ structure:
- Data Member
- Member Function
Data Members are the variables which are inside the Structure block. Member Functions are the functions inside the Structure Block.
Accessing Structure Member
Once we have defined a structure with its members, we need to access it all the data, and to access the members of the structure we use the member access operator(.), which is a dot symbol . First, we need to define the Structure variable using the Structure Name and then using the structure variable and member access operator we can access any member of the structure. Example
#include <iostream> #include <cstring> using namespace std; //defining a structure struct Students { char full_name[50]; // data members int age; char subject[100]; }; int main() { struct Students sam; // sam is the structure variable strcpy(sam.full_name, "Sam Wick"); // full_name is the string data type so we have used the string funciton sam.age =10; strcpy(sam.subject,"Science"); cout<<"The Full name of sam is: "<<sam.full_name; cout<<endl; cout<<"Sam Age is: "<< sam.age; return 0; }
Output
The Full name of sam is: Sam Wick Sam Age is: 10
Behind the Code In this example first, we define a structure outside the main() function. And then using the struct keyword and Students name we create a new variable sam. Now sam is a structure student type data structure which can access any data member of Student structure. We can also make more than one Structure variable if we want.
Structure Functions
We can also define a user-defined function inside the structure block, and like we access the data member we can access the Member Functions of the Structure. Example
#include <iostream> #include <cstring> using namespace std; //defining a structure struct Students { char full_name[50]; int age; char subject[100]; void show_detail() { cout<<" Student Name is: "<<full_name; cout<<endl; cout<<"Student age is: "<<age; cout<<endl; cout<<"Student subject is: "<<subject; } }; int main() { struct Students sam; // sam is the structure variable strcpy(sam.full_name, "Sam Wick"); // full_name is the string data type so we have used the string funciton sam.age= 10; // setting the age of sam varible strcpy(sam.subject,"Science"); // setting the sam variable subject name //print student detail sam.show_detail(); // calling the structure member function return 0; }
Output
Student Name is: Sam Wick Student age is: 10 Student subject is: Science
Behind the Code In this example, we have defined a member function inside the struct Students block, and using the sam.show_detail() statement we called that function inside the main() function.
Structure Pointer
Like other basic data types, we can also use pointers with structure. But if we use a pointer with the structure we use (->) symbol as the member access operator instead of the dot (.) operator. Example
#include <iostream> #include <cstring> using namespace std; //defining a structure struct Students { char full_name[50]; }; int main() { struct Students sam; // sam is the structure variable strcpy(sam.full_name, "Sam Wick"); struct Students* sam_wick = &sam ; // the pointer variable sam_wick is also a structure variable cout<<"The full name of Student is: "<< sam_wick->full_name; // here we have used -> operator because sam_wick is a structure pointer variable return 0; }
Output
The full name of Student is: Sam Wick
Behind the Code Here sam is the structure variable, like other variables it also stores at some memory location. Now, here we have used the struct Students* sam_wick = &sam ; statement, which basically signifies that sam_wick is a pointer variable which holds the address of sam variable. We all know that pointer variable should be of similar data type which addresses it holding that’s why sam_wick is also a struct Students variable. In structure, if we want to access the data member of the structure using a pointer variable than we use the -> symbol as a member access operator.
Structure Quick summary
- The structure is a data structure which can hold different elements of different data types.
- We can also define functions inside the structure variable.
- The variable inside the structure known as Data members whereas the functions known as Member functions.
- To access the data member and Member functions of the structure we use the structure variable with the member access operator.
People are also reading:
- Data Structures Interview Questions
- Assignment Operators Overloading in C++
- C++ Files and Streams
- Input/Output Operators Overloading in C++
- Interfaces in C++
- Relational Operators Overloading in C++
- Types of Data Structure
- C++ Modifier Types
- Operators in C++
- C++ Standard Library
- Binary Operators Overloading in C++